package com.lsq.tucao.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lsq.tucao.user.pojo.po.User;
import com.lsq.tucao.user.response.JsonResult;

public interface UserService extends IService<User> {

    /**
     * @Author: linshouqiang
     * @param username 用户名
     * @return JsonResult
     * @Description: 根据传入的用户名查询该用户的所有相关数据
     * @Date: 18:23 2021/1/14
     * @version 1.0
     */
    JsonResult getUserDetailByName(String username);

    /**
     * @Author: linshouqiang
     * @param username 用户名
     * @return JsonResult
     * @Description: 根据用户名查询用户相关信息
     * @Date: 18:24 2021/1/14
     * @version 1.0
     */
    JsonResult getUserByName(String username);

    /**
     * @author lsq
     * @description 根据用户名模糊查询用户
     * @param current 页码
     * @param size 每页条数
     * @param username 用户名
     * @return com.lsq.tucao.user.response.JsonResult
     * @create 2021/4/19 22:29
     */
    JsonResult searchUser(Integer current,Integer size,String username);

    /**
     * @Author: linshouqiang
     * @param userId 用户id
     * @return JsonResult
     * @Description: 删除用户及该用户的相关信息
     * @Date: 18:24 2021/1/14
     * @version 1.0
     */
    JsonResult deleteUserById(Long userId);

    /**
     * @Author: linshouqiang
     * @param user 用户实体类
     * @param isUpdateUsername 是否修改用户名
     * @return JsonResult
     * @Description: 修改用户信息（只能修改用户自己的信息）
     * @Date: 18:24 2021/1/14
     * @version 1.0
     */
    JsonResult updateUser(User user,Boolean isUpdateUsername);

    /**
     * @Author: linshouqiang
     * @param user 用户实体类
     * @return JsonResult
     * @Description: 用户注册（默认为新注册的用户分配normal角色，用户名不可重复）
     * @Date: 18:25 2021/1/14
     * @version 1.0
     */
    JsonResult registerUser(User user);

    /**
     * @Author: linshouqiang
     * @param username 用户名
     * @return JsonResult
     * @Description: 根据用户名查询该用户所具有的所有权限
     * @Date: 18:27 2021/1/14
     * @version 1.0
     */
    JsonResult getUserPermissions(String username);

    /**
     * @author lsq
     * @description 登录接口
     * @param username 用户名
     * @param password 用户密码
     * @return com.lsq.tucao.login.response.JsonResult
     * @create 2021/4/11 21:28
     */
    JsonResult login(String username,String password);

    /**
     * @author lsq
     * @description 登出接口
     * @param username 用户名
     * @return com.lsq.tucao.login.response.JsonResult
     * @create 2021/4/11 21:34
     */
    JsonResult logout(String username);

    /**
     * @author lsq
     * @description 分页获取所有用户信息
     * @param current 页码
     * @param size 每页条数
     * @return com.lsq.tucao.user.response.JsonResult
     * @create 2021/4/16 23:16
     */
    JsonResult pageUser(Integer current,Integer size);

    /**
     * @author lsq
     * @description 添加用户
     * @param user 用户实体类
     * @return com.lsq.tucao.user.response.JsonResult
     * @create 2021/4/17 10:23
     */
    JsonResult addUser(User user);

    /**
     * @author lsq
     * @description 修改管理员的登陆密码
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @return com.lsq.tucao.user.response.JsonResult
     * @create 2021/4/17 21:41
     */
    JsonResult updateAdminPassword(String oldPassword,String newPassword);

}
